/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.janalise.util;

import br.com.janalise.control.MapaDoTextoController;
import br.com.janalise.model.MapaDoTexto;
import br.com.janalise.system.Configurar;
import br.com.janalise.view.JanelaEspera;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTextArea;

/**
 *
 * @author boskyn9
 */
public class ProcuradorDeRegras extends Thread {
    private MapaDoTexto mapa;

    public JTextArea getArea() {
        return area;
    }

    public void setArea(JTextArea area) {
        this.area = area;
    }

    public MapaDoTexto getMapa() {
        return mapa;
    }

    public void setMapa(MapaDoTexto mapa) {
        this.mapa = mapa;
    }
    private JTextArea area;

    public ProcuradorDeRegras (MapaDoTexto mapa,JTextArea area){
        this.mapa = mapa;
        this.area = area;
    }

    @Override
    public void run() {
        try {
            JanelaEspera espera = new JanelaEspera();
            espera.setVisible(true);

            MapaDoTextoController controller = new MapaDoTextoController();
            mapa = controller.findByOid(mapa.getOid());
            StringTokenizer stem = new StringTokenizer(Validar.sohLetras(mapa.getConteudo()));
            int i = 0;
            espera.setMaximo(stem.countTokens());
            espera.setTexto("Gerando regras para o arquivo "+mapa.getNome());

            while (stem.hasMoreElements()) {
                espera.setValorBar(i++);
                String chave = (String)stem.nextElement();
                if(RemoverStopList.valido(chave)){
                    mapa.add(chave);
                    area.append(chave+"\n");
                    area.setCaretPosition(area.getText().length());
                    if((i % 1000)==0)
                        area.setText("");
                }
            }
            espera.close();
            controller.save(Validar.percentualValido(Configurar.getInstance().getPercOcorrencia(),mapa));
        } catch (Exception ex) {
            Logger.getLogger(ProcuradorDeRegras.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


}
